import { Database } from '../../../../Index';
import { Constructor } from '../common/Types';

/**
 * 自定义 Dao 的基类
 */
export abstract class Dao {
  constructor(readonly database: Database) {
  }

  /**
   * 用于创建自定义 Dao 的实例
   *
   * @param database 数据库实例
   * @returns 自定义 Dao 的建造者
   */
  static form(database: Database) {
    return {
      select<T extends Dao>(dao: Constructor<T>) {
        return new dao(database)
      }
    }
  }
}